<?php
/************************************************************************************************
 * Copyright (c) 2004-2009, codesign
 * 
 * All rights reserved.
 * 
 * LICENCE CC/BSD
 * You are free:
 * 
 * to Share & to copy, distribute and transmit the work
 * to Remix & to adapt the work
 * 
 * Under the following conditions:
 * 
 * Attribution. You must attribute the work in the manner specified by the author or 
 * licensor (but not in any way that suggests that they endorse you or your use of the work).
 * Share Alike. If you alter, transform, or build upon this work, you may distribute 
 * the resulting work only under the same, similar or a compatible license.
 * For any reuse or distribution, you must make clear to others the license terms of 
 * this work. The best way to do this is with a link to this web page.
 * Any of the above conditions can be waived if you get permission from the copyright holder.
 * Nothing in this license impairs or restricts the author's moral rights.
 * 
 * LICENCE BSD
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, 
 * this list of conditions and the following disclaimer in the documentation 
 * and/or other materials provided with the distribution.
 * Neither the name of "codesign" nor the names of its contributors may be used 
 * to endorse or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 ************************************************************************************************/
error_reporting( E_ALL );


include_once( '_prerun' );
USE_LIB( 'picture' );
USE_LIB( 'formfieldfile' );

$src = FILE_ROOT . urldecode($_GET['s']);

$replace = FILE_ROOT . 'css/images/bg-no-image.png';
if( !file_exists( $src ) || !isset($_GET['s'] ) || empty($_GET['s'] ) || !is_file($src ) ) $src = $replace;
$sources = pathinfo( $src );

$dirname = str_replace( MEDIAS_ROOT, '', $sources['dirname'] ) . '/';
$width = GETVAL( 'w', 100 );
$height = GETVAL( 'h', 100 );
if( isset( $_GET['copy'] ) )
	$searchfilename = FILE_ROOT . 'cache/' . md5(FormFieldFile::makeFilename( $sources['basename'] ));
else
	$searchfilename = FILE_ROOT . 'cache/' . md5(FormFieldFile::makeFilename( $sources['basename'].$width.$height.(isset($_GET['crop'])?'c':'') ));
	
$source = $src;

if( !file_exists( $searchfilename ) || !getimagesize( $searchfilename ) )
	{
	if( isset( $_GET['copy'] ) )
		{
		copy( $src, $searchfilename );
		list( $width, $height, $type, $attr ) = getimagesize( $searchfilename );
		$types = array(1=>'gif',2=>'jpg',3=>'png');
		header('Content-type:image/'.$types[$type]);
		header("Cache-Control: public");
		header("Expires:Thu, 15 Apr 2010 20:00:00 GMT");
		header("unset:Pragma");
		header("unset:Last-Modified");
		}
	else
		{
	ob_start();
	$pict = new Picture( $source );
	if( isset( $_GET['crop'] ) )
		$pict->cropTo( $width, $height );
	else
		$pict->dimensionTo( $width, $height );
		$pict->toMemory( $quality=100 );
	file_put_contents( $searchfilename, ob_get_contents() );
	list( $width, $height, $type, $attr ) = getimagesize( $searchfilename );
	$types = array(1=>'gif',2=>'jpg',3=>'png');
	header('Content-type:image/'.$types[$type]);
	header("Cache-Control: public");
	header("Expires:Thu, 15 Apr 2010 20:00:00 GMT");
	header("unset:Pragma");
	header("unset:Last-Modified");
	ob_end_flush();
	}
	}
else
	{
	list( $width, $height, $type, $attr ) = getimagesize( $searchfilename );
	$types = array(1=>'gif',2=>'jpg',3=>'png');
	header('Content-type:image/'.$types[$type]);
	header("Cache-Control: public");
	header("Expires:Thu, 15 Apr 2010 20:00:00 GMT");
	header("unset:Pragma");
	header("unset:Last-Modified");
	}
readfile( $searchfilename );
?>